<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Shopingcart extends Controller_Shopbase {
	

	public function action_index()
	{
		parent::template();
		$session = Session::instance();
		$shop = new Model_Shop();
		$data = array();
		$data['lang'] = $this->request->param('lang','');
		$this->template->title = "Корзина із покупками!";
		
		
		$prod = $session->get('products', 0);
		
		$i=0;
		if($prod != 0)
		foreach($prod as $product)
		{
			$p = $shop->getProduct($product);
			
			$data['products'][$i]['id'] = $p['id'];
			$data['products'][$i]['name'] = $p['name'];
			$data['products'][$i]['description'] = $p['description'];
			$data['products'][$i]['price'] = $p['price'];
			
			$i++;
		}
		
		//	Вивід головної сторінки магазину
		$this->data['shopbody'] = View::factory('shopingcart/main', $data);
		
		
		//	Вивід головної сторінки магазину
		$this->template->content = View::factory('shop/base', $this->data);
	}
	
	
	public function action_addtocart()
	{
		$session = Session::instance();
		
		$productsAray = $session->get('products', array());
		
		//	якщо видраного продукту немає у корзині
		if(!in_array($this->request->param('id',null), $productsAray))
		{
			if($this->request->param('id',null) != null)
			{
				$countPproducts = count($session->get('products', ''));
				$countPproducts++;
			}
			else
			{
				$countPproducts = 1;
			}
			
			
			$productsAray[count($productsAray)]  = $this->request->param('id',null);
			$session->set('products', $productsAray);
		}
		
		
		//	Перенапрвлення на сторінку користувача
		Request::initial()->redirect($_SERVER['HTTP_REFERER']);
		return parent::before();
	}
	
	
	public function action_removeproduct()
	{
		$session = Session::instance();
		
		$productsAray = $session->get('products', array());
		$id = $this->request->param('id',null);
		$lang = $this->request->param('lang','');
		
		$newArray = array();
		if(isset($productsAray) AND isset($id))
		{
			foreach($productsAray as $k => $v)
			{
				if($id != $v)
				{
					$newArray[] = $v;
				}
			}
		}
		
		// Add this exception to the log:
		Kohana::$log->add(Log::ERROR, "Користувач видалив продукт із корзини")->write();
		
		$session->set('products', null);
		$session->set('products', $newArray);
		
		
		if(count($productsAray) < 2)
		{
			//	Перенапрвлення на магазин
			Request::initial()->redirect('/index.php/shop/'.$lang);
			return parent::before();
		}
		else
		{
			//	Перенапрвлення на корзину
			Request::initial()->redirect($_SERVER['HTTP_REFERER']);
			return parent::before();
		}
	}
	
	
	public function action_buy()
	{
		parent::template();
		$session	= Session::instance();
		$auth		= Auth::instance();
		$shop		= new Model_Shop();
		$lang		= $this->request->param('lang','');
		
		//	Якщо користувач авторизований
		if($auth->logged_in() == 0)
		{
			//	Перенапрвлення користувача на сторінку входу
			Request::initial()->redirect('/index.php/auth/'.$lang.'/login/');
			return parent::before();
		}
		
		$this->template->title = "Корзина із покупками!";
		
		
		$session->set('products', array());
		
		$buyProducts = array();
		$i=1; $j=0;
		while(1)
		{
			if($product = Arr::get($_POST, 'product_'.$i, null))
			{
				$countProducts = Arr::get($_POST, 'countProduct_'.$product, null);
				
				$buyProducts[$j]['productId'] = $product;
				$buyProducts[$j]['productCount'] = $countProducts;
				
				$j++;
			}
			else
			{
				break;
			}
			
			$i++;
		}
		
		$orderId	= $shop->newOrder($buyProducts, $auth->get_user()->id);
		$orderData	= $shop->getPriceByOrder($orderId);
		
		$data['orderData']	= $orderData;
		$data['products']	= $buyProducts;
		$data['lang']	= $lang;
		$this->data['shopbody'] = View::factory('shopingcart/productbuy', $data);
		
		//	Вивід головної сторінки магазину
		$this->template->content = View::factory('shop/base', $this->data);
	}
	
} // End Shop
